#include "LCD.h"
#include "HT1621.H"
#include <STRING.H>

U_LCD_RAM  LCD_Ram;

// 数码管显示共阴接法段码表
const uint8 SEGMENT_CODE[] = {
    0x3F, // 0
    0x06, // 1
    0x5B, // 2
    0x4F, // 3
    0x66, // 4
    0x6D, // 5
    0x7D, // 6
    0x07, // 7
    0x7F, // 8
    0x6F, // 9
    0x00, // 不显示     0x0A
    0x5C, // o          0x0B
    0x3F, // O          0x0C
    0x71, // F          0x0D
    0x40, // -          0x0E  0100 0000  
};

void initLCD(uint8 initValue)
{
    uint8 i;
    
    SendCmd(BIAS_1_3);      //ÉèÖÃÆ«Ñ¹ºÍÕ¼¿Õ±È
    // SendCmd(XTAL32K);
    SendCmd(SYSEN); //´ò¿ªÏµÍ³Õñµ´Æ÷
    SendCmd(LCDON); //´ò¿ªLCDÆ«Ñ¹·¢ÉúÆ÷
    // SendCmd(OUT_1HZ);
    SendCmd(CLR_WDT);
    // SendCmd(WDT_EN);
    SendCmd(CLR_TIMER);
    // SendCmd(TIMER_EN);
    // SendCmd(IRQ_EN);

    for(i=0; i<sizeof(U_LCD_RAM); i++)
    {
        LCD_Ram.Buf[i] = initValue;
    }

    // LCD_Ram.Detail.ICON_FENGWEN = 1;
    // LCD_Ram.Detail.ICON_JIENENG = 1;
    // LCD_DisplayDigi(1,2);
}

void DeInitLCD(void)
{
    // SendCmd(LCDOFF);
    memset(LCD_Ram.Buf, 0, sizeof(U_LCD_RAM));
    SendCmd(LCDOFF);
    SendCmd(SYSDIS);

    SET_DAT_OUT();
    dat = 1;
    cs = 1;
    wr = 1;
}

void LCD_DisplayDigi(uint8 digi_h, uint8 digi_l)
{
    LCD_Ram.Detail.Dig1_h = SEGMENT_CODE[digi_h]>>4;
    LCD_Ram.Detail.Dig1_l = SEGMENT_CODE[digi_h]&0x0F;

    LCD_Ram.Detail.Dig2_h = SEGMENT_CODE[digi_l]>>4;
    LCD_Ram.Detail.Dig2_l = SEGMENT_CODE[digi_l]&0x0F;
}

// void LCD_DisplayICON(uint8 icon, uint8 state)
// {
    
//     switch(icon)
//     {
//         case ICON_SHUIWEN:
//         break;

//         case ICON_ZUOWEN:
//         break;

//     }
// }